15. 探索与利用
探索与利用

探索与利用困境(来源:http://slides.com/ericmoura/deck-2/embed)
处理 OpenAI Gym 中的环境
在很多情况下,我们都希望强化学习智能体学习尽快最大化奖励。在很多 OpenAI Gym 环境中都是这种情况。
例如,对于 FrozenLake-v0 环境,智能体在连续尝试 100 多次后评价奖励为 0.78,则问题得到解决。

FrozenLake-v0 环境的算法解决方案根据找到解决方案所需的阶段次数排名。

Taxi-v1、Cartpole-v1 和 MountainCar-v0(以及很多其他环境)的解决方案也根据找到解决方案所需的阶段次数排名。为此,有必要设计一个尽快学习最优策略 \pi_* 的算法。
探索-利用困境
注意,智能体一开始不知道环境的一步动态特性。为了最大化回报,智能体必须通过互动了解环境。
在每个时间步,当智能体选择一个动作时,它都根据以前与环境的互动经验做出决策。并且,为了尽量减少求解 OpenAI Gym 中的环境所需的阶段次数,我们的第一个想法是设计一种策略,其中智能体始终选择它认为(根据过去的经验)将最大化回报的动作。因此,智能体可以遵守对动作值函数估算来说很贪婪的策略。我们在上个视频(MC 控制:策略改进)中讨论过此方法,发现它可以轻松地收敛于次最优策略。
为了了解为何是这种情况,注意在早期阶段,智能体所了解的信息很有限(可能有缺陷)。因此很有可能智能体估计非贪婪的动作实际上比估计贪婪的动作更好。
因此,成功的强化学习智能体不能在每个时间步都采取贪婪的动作(即它不能始终利用自己的经验);为了发现最优策略,它必须不断改进所有状态动作对的估算回报(换句话说,它必须继续通过经历每个状态动作对探索各种可能性)。但是,智能体应该始终保持一定的贪婪性,从而尽快最大化回报。这就引出了 \epsilon 贪婪策略。
我们将需要平衡这两个竞争性条件的情况称为探索-利用困境。解决该困境的一个潜在方法是在构建 \epsilon 贪婪策略时逐步修改 \epsilon 的值。
设置 \epsilon 的值
合理的做法是智能体一开始与环境互动时,倾向于探索环境,而不是利用已有的经验。毕竟当智能体对环境的动态特性相对知之甚少时,应该怀疑自己的有限知识并探索环境,或者尝试各种最大化回报的策略。因此,最佳起始策略是等概率随机策略,因为它在每个状态探索所有潜在动作的概率是相同的。你在上个练习中发现,\epsilon = 1 会生成一个等同于等概率随机策略的 \epsilon 贪婪策略。
在后续时间步,合理的做法是倾向于利用已有的经验,而不是探索环境,策略在动作值函数估算方面越来越贪婪。毕竟智能体与环境的互动次数越多,它对估算动作值函数的信任就越高。你在上个练习中发现,\epsilon = 0 会生成贪婪策略(或者非常倾向于利用已有的经验而不是探索环境的策略)。
幸运的是,此策略(一开始倾向于探索环境而不是利用已有的经验,然后逐渐倾向于利用已有的经验而不是探索环境)可以证明是最优策略。
有限状态下的无限探索贪婪算法 (GLIE)
为了保证 MC 控制会收敛于最优策略 \pi_*,我们需要确保满足两个条件。我们将这些条件称之为有限状态下的无限探索贪婪算法 (GLIE)。尤其是,如果:
- 每个状态动作对 s, a(针对所有 s\in\mathcal{S} 和 a\in\mathcal{A}(s))被经历无限次
- 策略收敛相对于动作值函数估算 Q 来说贪婪的策略。
然后,MC 控制保证会收敛于最优策略(在有限状态下运行无穷个阶段)。这些条件确保:
- 智能体继续在所有时间步进行探索
- 智能体逐渐倾向于利用已有的经验(而不是探索环境)。
满足这些条件的一种方式是在指定 \epsilon 贪婪策略时,修改 \epsilon 的值。尤其是,使 \epsilon_i 对应于第 i 个时间步。然后在以下情况下,这两个条件都会满足:
- 对于所有时间步 i,\epsilon_i > 0
- 当时间步 i 接近无穷大时,\epsilon_i 减小到 0(即 \lim_{i\to\infty} \epsilon_i = 0)。
例如,为了确保收敛于最优策略,我们可以设 \epsilon_i = \frac{1}{i}。(建议你验证对于所有 i 和 \lim_{i\to\infty} \epsilon_i = 0,\epsilon_i > 0。)